'''
Created on 25/04/2013

@author: jean
'''
from pm.database import db

from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey

class TipoItem(db.Model):
    '''
    Clase que relaciona roles con permisos
    '''
    __tablename__ = 'tipo_item'
    
    id_tipo_item = db.Column(db.Integer, primary_key=True, nullable=False)
    '''
       PrimaryKey de la tabla
    '''
    codigo= db.Column(db.String, nullable=False)
    '''
       Codigo del tipo de item
    '''
    descripcion = db.Column(db.String, nullable=False)
    '''
       Descripcion del tipo de item
    '''
    activo = db.Column(db.Boolean, nullable=False)
    '''
       Indica si el el registro se encuentra activo
    '''
    detalle = db.Column(db.String, nullable=False)
    '''
        detalla a que fase y proyecto pertenece el tipo de item
    '''
    id_fase = db.Column(db.Integer, ForeignKey('fases.id_fase'),nullable=False) 
      
    def __init__(self,codigo, descripcion,detalle, id_fase, activo = True):
        
        '''
        @param codigo: Codigo del tipo de Item
        @param descripcion: descripcion del tipo de Item
        @param activo: si esta asociacion se encuentra activa o no
        @param detalle: una breve descripcion de la fase y el proyecto al que pertenece
        @param id_fase: la fase a la que pertenece 
        '''
        self.codigo = codigo
        self.descripcion = descripcion
        self.activo = activo
        self.detalle = detalle
        self.id_fase = id_fase
    
    def __repr__(self):
        return '{id_tipo_item:%s, codigo:%s, descripcion:%s}' % (self.id_tipo_item,self.codigo ,self.descripcion)
    
    def __json__(self):
        '''
         devuelve el json que representa a Tipo Item
        '''
        return {'id':self.id_tipo_item , 
                'codigo': self.codigo, 
                'descripcion': self.descripcion,
                'activo': self.activo,
                'detalle': self.detalle,
                'id_fase': self.id_fase
                }